If an item was removed, make sure the selected item is still selected or
select the last one if the selected item was removed.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
_itemRemovedHandler(n) {
if (this._items.length > 0) {
- let newIndex = Math.min(n, this._items.length - 1);
+ let newIndex;
+
+ if (n < this._selectedIndex)
+ newIndex = this._selectedIndex - 1;
+ else if (n === this._selectedIndex)
+ newIndex = Math.min(n, this._items.length - 1);
+ else if (n > this._selectedIndex)
+ return; // No need to select something new in this case
+
this._select(newIndex);
} else {
this.fadeAndDestroy();